﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Medical_Store_Billing.Component;
using Medical_Store_Billing.Business_Login_Layer;
using Medical_Store_Billing.Report;

namespace Medical_Store_Billing
{
    public partial class FormMain : Form
    {
        Config m_config = null;
        Login m_login = null;
        NhanvienBLL m_nhanvienbll = new NhanvienBLL();
        Formquanlynhanvien m_quanlynv = null;
        Form_Lapphieunhaphang m_lapphieu = null;
        Form_timkiemphieunhap m_timkiemphieunhap = null;
        Formlapdondathang m_lapddh = null;
        FormXuathang m_xuathang = null;
        Form_timkiemxuathang m_timxuat = null;
        Formqlkhohang m_qlkho = null;
        Formquanlynhacungcap m_qlncc = null;
        Formquanlykhachhang m_plkh = null;

        #region constructor
        public FormMain()
        {
            InitializeComponent();
        }
        #endregion

        #region load
        public void FormMain_Load(object sender, EventArgs e)
        {
           
            if (Dataservice.OpenConnection())
            {
                Default();
                menu_hethong_ketnoi.Enabled = false;
                Dangnhap();

            }
            else
            {
                Default();
                MessageBox.Show("Vui Lòng kết nối cơ sở dữ liệu trước khi sử dụng Phần Mềm", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                Ketnoi();
                
            }
        }
        #endregion

        #region Ketnoi
        public void Ketnoi()
        {
            Start:
            if (m_config == null || m_config.IsDisposed)
                m_config = new Config();

            if (m_config.ShowDialog() == DialogResult.OK)
            {
                if (m_config.txtserver.Text == "")
                {
                    m_config.seterror("Nhập Server!");
                    goto Start;
                }


                if (m_config.txtdatabase.Text == "")
                {
                    m_config.seterror("Nhập Database!");
                    goto Start;
                }

                if (m_config.txtuser.Text == "")
                {
                    m_config.seterror("Nhập User!");
                    goto Start;
                }

                if (m_config.txtpass.Text == "")
                {
                    m_config.seterror("Nhập Pass!");
                    goto Start;
                }


                Dataservice.WriteConfig(m_config.txtserver.Text, m_config.txtdatabase.Text, m_config.txtuser.Text, m_config.txtpass.Text);
                Application.Restart();

            }
            else return;
            

            
        }
        #endregion

        #region Dangnhap
        public void Dangnhap()
        {
        Log:
            if (m_login == null || m_login.IsDisposed)
                m_login = new Login();
        if (m_login.ShowDialog() == DialogResult.OK)
        {
            if (m_login.txtuser.Text == "")
            {
                m_login.seterror("Nhập User!");
                goto Log;
            }

            if (m_login.txtpass.Text == "")
            {
                m_login.seterror("Nhập Pass!");
                goto Log;
            }
            int phanquyen = m_nhanvienbll.Dangnhap(m_login.txtuser.Text, m_login.txtpass.Text);

            switch (phanquyen)
            {
                case 0:
                    m_login.seterror("Người dùng không tồn tại!");
                    goto Log;
                case 1:
                    Permissions("admin");
                    break;
                case 2:
                    Permissions("user");
                    break;
                case 3:
                    m_login.seterror("Sai mật khẩu!");
                    goto Log;

            }
        }
        else return;

        }
        #endregion

        #region Phân Quyền
        public void Permissions(string m_per)
        {
            switch (m_per)
            {
                case "admin":
                    {
                        MessageBox.Show("Chào Mừng Admin trở lại với Hệ Thống!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       
                        admin(); 
                        break;
                    }
                case "user":
                    {
                        MessageBox.Show("Chào Mừng Nhân Viên trở lại với Hệ THống!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       
                        user(); 
                        break;
                    }
            }
        }
        #endregion

        #region Default
        public void Default()
        {
            menu_hethong.Enabled = true;
            menu_datxuat.Enabled = false;
            menu_nhaphang.Enabled = false;
            menu_quanly.Enabled = false;
            menu_trogiup.Enabled = true;
            menu_hethong_dangxuat.Enabled = false;
            menu_hethong_quanly.Enabled = false;
            menu_baocao.Enabled = false;
            menu_backup.Enabled = false;
        }
        #endregion

        #region Admin
        public void admin()
        {
            menu_hethong.Enabled = true;
            menu_datxuat.Enabled = true;
            menu_nhaphang.Enabled = true;
            menu_quanly.Enabled = true;
            menu_trogiup.Enabled = true;
            menu_hethong_dangxuat.Enabled = true;
            menu_hethong_quanly.Enabled = true;
            menu_hethong_dangnhap.Enabled = false;
            menu_baocao.Enabled = true;
            menu_backup.Enabled = true;
        }
        #endregion

        #region User
        public void user()
        {
            menu_hethong.Enabled = true;
            menu_datxuat.Enabled = true;
            menu_nhaphang.Enabled = true;
            menu_quanly.Enabled = true;
            menu_trogiup.Enabled = true;
            menu_hethong_dangxuat.Enabled = true;
            menu_hethong_quanly.Enabled = false;
            menu_hethong_dangnhap.Enabled = false;
            menu_baocao.Enabled = true;
            menu_backup.Enabled = false;
        }
        #endregion

        #region menu_hethong_ketnoi_click
        private void menu_hethong_ketnoi_Click(object sender, EventArgs e)
        {
            if (m_config == null || m_config.IsDisposed)
                m_config = new Config();
            m_config.txtserver.Text = "";
            m_config.txtdatabase.Text = "";
            m_config.txtuser.Text = "";
            m_config.txtpass.Text = "";
            m_config.seterror("");
            Ketnoi();

        }
        #endregion

        #region menu_hethong_thoat_click
        private void menu_hethong_thoat_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        #endregion

        private void menu_hethong_dangxuat_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
            {
                frm.Close();
            }

            if (m_login == null || m_login.IsDisposed)
                m_login = new Login();

            m_login.txtuser.Text = "";
            m_login.txtpass.Text = "";
            m_login.seterror("");
            Default();
            Dangnhap();
        }

        private void menu_hethong_quanly_Click(object sender, EventArgs e)
        {
            if (m_quanlynv == null || m_quanlynv.IsDisposed)
            {
                m_quanlynv = new Formquanlynhanvien();
                m_quanlynv.MdiParent = FormMain.ActiveForm;
                m_quanlynv.Show();
            }
            else
                m_quanlynv.Activate();
        }

        private void lậpPhiếuNhậpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_lapphieu = new Form_Lapphieunhaphang();
            m_lapphieu.MdiParent = FormMain.ActiveForm;
            m_lapphieu.Show();

        }

        private void tìmKiếmPhiếuNhậpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_timkiemphieunhap = new Form_timkiemphieunhap();
            m_timkiemphieunhap.MdiParent = FormMain.ActiveForm;
            m_timkiemphieunhap.Show();
        }

        private void lậpĐơnĐặtHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_lapddh = new Formlapdondathang();
            m_lapddh.MdiParent = FormMain.ActiveForm;
            m_lapddh.Show();
        }

        private void lậpĐơnXuấtHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_xuathang = new FormXuathang();
            m_xuathang.MdiParent = FormMain.ActiveForm;
            m_xuathang.Show();
        }

        private void btnTimkiemdxh_Click(object sender, EventArgs e)
        {
            m_timxuat = new Form_timkiemxuathang();
            m_timxuat.MdiParent = FormMain.ActiveForm;
            m_timxuat.Show();
        }

        private void khoHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_qlkho = new Formqlkhohang();
            m_qlkho.MdiParent = FormMain.ActiveForm;
            m_qlkho.Show();
        }


        private void nhàCungCấpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_qlncc = new Formquanlynhacungcap();
            m_qlncc.MdiParent = FormMain.ActiveForm;
            m_qlncc.Show();

        }

        private void kháchHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_plkh = new Formquanlykhachhang();
            m_plkh.MdiParent = FormMain.ActiveForm;
            m_plkh.Show();
        }

        private void backupToolStripMenuItem_Click(object sender, EventArgs e)
        {
            BackUp f = new BackUp();
            f.MdiParent = FormMain.ActiveForm;
            f.Show();
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Restore f = new Restore();
            f.MdiParent = FormMain.ActiveForm;
            f.Show();
        }

        private void menu_hethong_dangnhap_Click(object sender, EventArgs e)
        {
            Dangnhap();
        }

      

        private void thốngKêKhoHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormReport1 r = new FormReport1();
            r.MdiParent = FormMain.ActiveForm;
            r.Show();
        }

        private void thốngKêNhậpHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormReport2 r = new FormReport2();
            r.MdiParent = FormMain.ActiveForm;
            r.Show();
        }

        private void thốngKêXuấtHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormReport3 r = new FormReport3();
            r.MdiParent = FormMain.ActiveForm;
            r.Show();
        }

        private void giớiThiệuHệThốngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormNhom nhom = new FormNhom();
            nhom.MdiParent = FormMain.ActiveForm;
            nhom.Show();
        }

    }
}
